package com.star.star.controller;

import com.star.security.annotations.Authorize;
import com.star.star.dto.StarPhotoSaveBatchWxuserDTO;
import com.star.star.service.StarPhotoService;
import com.star.star.vo.StarPhotoListVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.star.core.base.BaseController;

import java.util.List;

/**
 * 艺人照片
 *
 * @author yangzj
 */
@RestController
@RequestMapping("/star-photo")
public class StarPhotoController extends BaseController {

    @Autowired
    private StarPhotoService starPhotoService;

    //-------------------- 以下微信小程序（用户端）接口 --------------------

    /**
     * 保存批量-微信小程序（用户端）
     *
     * @param dto 入参
     */
    @Authorize("wxuser")
    @PostMapping("/wxuser/batch")
    public void saveBatchWxuser(@Validated @RequestBody StarPhotoSaveBatchWxuserDTO dto) {
        starPhotoService.saveBatchWxuser(dto, getUserId());
    }

    /**
     * 更新发布-微信小程序（用户端）
     *
     * @param id        ID
     * @param isPublish 是否出版
     */
    @Authorize("wxuser")
    @PutMapping("/wxuser/publish/{id}/{isPublish}")
    public void updatePublishWxuser(@PathVariable("id") Long id, @PathVariable("isPublish") Boolean isPublish) {
        starPhotoService.updatePublishWxuser(id, isPublish, getUserId());
    }

    /**
     * 设置为封面-微信小程序（用户端）
     *
     * @param id ID
     */
    @Authorize("wxuser")
    @PutMapping("/wxuser/cover/{id}")
    public void updateCoverWxuser(@PathVariable("id") Long id) {
        starPhotoService.updateCoverWxuser(id, getUserId());
    }

    /**
     * 删除通过ID-微信小程序（用户端）
     *
     * @param id ID
     */
    @Authorize("wxuser")
    @DeleteMapping("/wxuser/{id}")
    void deleteByIdWxuser(@PathVariable("id") Long id) {
        starPhotoService.deleteByIdWxuser(id, getUserId());
    }

    /**
     * 照片列表-微信小程序（用户端）
     *
     * @param starId 艺人ID
     * @return {@link List}<{@link StarPhotoListVO}>
     */
    @Authorize("wxuser")
    @GetMapping("/wxuser/list/{starId}")
    public List<StarPhotoListVO> listPhoneWxuser(@PathVariable("starId") Long starId) {
        // 查自己全部的照片
        return starPhotoService.listByStarId(starId, null, null, getUserId());
    }
}
